global var_listeVoisins


################################################################################
#
# Ajoute un noeud a la liste de nos voisins
#
# => param_id : id du noeud a ajouter a la liste des voisins
#
################################################################################
proc proc_ajouterVoisin { param_id } {
	global var_listeVoisins

	set var_listeVoisins($param_id) $param_id
	proc_ajouterNoeud $param_id
}

################################################################################
#
# Modifie la distance d'un voisin donne
#
# => param_id : id du voisin dont on veut modifier la distance
# => param_distance : nouvelle distance
#
################################################################################
proc proc_voisinSetDistance { param_id param_distance } {
	global var_listeVoisins

	set var_listeVoisins($param_id) $param_id
	set var_listeVoisins($param_id,distance) $param_distance
}

################################################################################
#
# Modifie la date de dernier contact d'un voisin
#
# => param_id : id du noeud dont on veut modifier la date de dernier contact
# => param_dernierContact : nouvelle date
#
################################################################################
proc proc_voisinSetDernierContact { param_id param_dernierContact } {
	global var_listeVoisins

	set var_listeVoisins($param_id) $param_id
	set var_listeVoisins($param_id,dernierContact) $param_dernierContact
}


################################################################################
#
# Retourne la distance a un voisin donne
#
# => param_id : id du voisin dont on veut recuperer la distance
#
# <= distance du voisin ou -1 si le noeud n'est pas connu en tant que voisin
#
################################################################################
proc proc_getVoisinDistance { param_id } {
	global var_listeVoisins
	
	if { [info exist var_listeVoisins($param_id,distance)] == 1 } {
		return $var_listeVoisins($param_id,distance)
	} else {
		return -1
	}
	
	
}

################################################################################
#
# Retourne la date de dernier contact d'un voisin donne
#
# => param_id : id du voisin dont on veut recuperer la date de dernier contact
#
# <= date de dernier contact du voisin ou 0 si le noeud n'est pas connu 
#    en tant que voisin (equivalent a une date tres ancienne)
#
################################################################################
proc proc_getVoisinDernierContact { param_id } {
	global var_listeVoisins
	
	if { [info exist var_listeVoisins($param_id,dernierContact)] == 1 } {
		return $var_listeVoisins($param_id,dernierContact)
	} else {
		return 0
	}
}

################################################################################
#
# Retourne la liste des ids des voisins
#
# <= liste des ids de tous les voisins connus
#
################################################################################
proc proc_getListeVoisinsId { } {
	global var_listeVoisins
	
	set var_listeRetour {}
	
	foreach var_idNoeud [array names var_listeVoisins -regexp {^[^,]*$}]  {
		lappend var_listeRetour $var_idNoeud
	}
	
	return $var_listeRetour
}

################################################################################
#
# Verifie si un noeud donne est un de nos voisins
#
# => param_idNoeud : id du noeud pour lequel on veut verifier
#
# <= 1 si le noeud est un de nos voisins
#    0 sinon
#
################################################################################
proc proc_isVoisin { param_idNoeud } {
	global var_listeVoisins
	
	if { [info exists var_listeVoisins($param_idNoeud)] } {
		return 1
	}
	return 0
}

################################################################################
#
# Supprime un noeud de la liste de nos voisins
#
# => param_voisinId : id du voisin que l'on veut supprimer
#
################################################################################
proc proc_supprimerVoisin { param_voisinId } {
	global var_listeVoisins

	if { [info exist var_listeVoisins($param_voisinId)] == 1 } {
		array unset var_listeVoisins "$param_voisinId"
		array unset var_listeVoisins "$param_voisinId,*"
	}
}
